﻿using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Reflection;
using System.Xml.Linq;

namespace GenY.TypeWrapper {
  public interface ITypeWrapper {
    string Wrap( Dictionary<Type, IEnumerable<MemberInfo>> types, XElement GenYElement );
  }

  [MetadataAttribute]
  [AttributeUsage( AttributeTargets.Class )]
  public class TypeWapperAttribute : ExportAttribute {
    public String Name { get; set; }

    public TypeWapperAttribute( string Name )
      : base( typeof( ITypeWrapper ) ) {
      this.Name = Name;
    }
  }
}

namespace GenY.TypeWrapper.Internal {
  public interface ITypeWrapperMetadata {
    String Name { get; }
  }
}